package admin_advert_api

import (
	"blog_go/global"
	"blog_go/models"
	"blog_go/models/res"
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
)

// 入参结构体
type AdvertAddReq struct {
	Title  string `json:"title" binding:"required" msg:"标题不能为空"`     // 显示的标题
	Href   string `json:"href" binding:"required" msg:"链接输入非法"`      // 跳转的链接 binding:"required,url"
	Image  string `json:"image" binding:"required" msg:"图片地址输入非法"`   // 图片
	IsShow *bool  `json:"is_show" binding:"required" msg:"isShow必传"` // 是否展示 使用指针可以接受false,不然false也会认为是没传,触发非空 指针类型只有nil才会触发非空
}

// AdvertAdd 广告添加
// @Tags 广告管理
// @Summary 广告添加
// @Description 广告添加
// @Param params body AdvertAddReq true "参数json"
// @Param token header string true "token"
// @Router /api/admin/advert/add [post]
// @Produce json
// @Success 200 {object} res.Response{data=bool}
func (AdminAdvertApi) AdvertAdd(c *gin.Context) {
	var req AdvertAddReq
	if err := c.ShouldBindJSON(&req); err != nil {
		panic(res.ErrorMsg{Err: err, Data: &req})
	}
	// 重复的判断
	var advertQuery models.AdvertModel
	if err := global.DB.Take(&advertQuery, "title=?", req.Title).Error; err == nil {
		// 等于nli 表示没有错误 说明查询到了数据
		panic("广告已经存在")
	}
	err := global.DB.Create(&models.AdvertModel{
		Title:  req.Title,
		Href:   req.Href,
		Image:  req.Image,
		IsShow: *req.IsShow, // 指针实参加*等于是非指针,形参*则是去指针
	}).Error
	if err != nil {
		logrus.Error(err)
		panic(err)
	}
	res.Ok("添加成功", true, c)
}
